import os

# 输入文件路径
input_file_path = r'e:\ProjectDemo\spider\PythonProject\logger\deps.txt'
# 输出文件路径
output_file_path = r'e:\ProjectDemo\spider\PythonProject\logger\spring_boot_log.txt'

# 确保输出目录存在
output_dir = os.path.dirname(output_file_path)
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# 检查文件是否存在
if not os.path.exists(input_file_path):
    print(f"错误: 文件不存在 - {input_file_path}")
    exit(1)
else:
    print(f"文件存在: {input_file_path}")
    print(f"文件大小: {os.path.getsize(input_file_path)} 字节")

success = False
spring_boot_lines = []

# 尝试使用utf-16-le编码读取（因为检测到BOM）
try:
    print("尝试使用utf-16-le编码读取文件...")
    with open(input_file_path, 'r', encoding='utf-16-le') as file:
        for line_number, line in enumerate(file, 1):
            # 检查行是否包含'spring-boot'
            if 'spring-boot' in line.lower():
                spring_boot_lines.append(line.rstrip('\r\n'))
                print(f"在第 {line_number} 行发现'spring-boot': {line.strip()}")

    if spring_boot_lines:
        # 写入输出文件
        with open(output_file_path, 'w', encoding='utf-8') as file:
            file.write('\n'.join(spring_boot_lines))

        print(f"提取完成！已将包含'spring-boot'的行保存到: {output_file_path}")
        print(f"共提取到 {len(spring_boot_lines)} 行包含'spring-boot'的内容")
        success = True
    else:
        print("未找到包含'spring-boot'的行。")

except Exception as e:
    print(f"使用utf-16-le编码读取文件时出错: {str(e)}")

# 如果utf-16-le失败，尝试其他编码
if not success:
    for encoding in ['utf-8', 'latin-1', 'gbk']:
        try:
            print(f"尝试使用编码 {encoding} 读取文件...")
            spring_boot_lines = []
            with open(input_file_path, 'r', encoding=encoding) as file:
                for line_number, line in enumerate(file, 1):
                    if 'spring-boot' in line.lower():
                        spring_boot_lines.append(line.rstrip('\r\n'))
                        print(f"在第 {line_number} 行发现'spring-boot': {line.strip()}")

            if spring_boot_lines:
                with open(output_file_path, 'w', encoding='utf-8') as file:
                    file.write('\n'.join(spring_boot_lines))

                print(f"使用编码 {encoding} 提取完成！已将包含'spring-boot'的行保存到: {output_file_path}")
                print(f"共提取到 {len(spring_boot_lines)} 行包含'spring-boot'的内容")
                success = True
                break
            else:
                print(f"使用编码 {encoding} 未找到包含'spring-boot'的行。")

        except Exception as e:
            print(f"使用编码 {encoding} 读取文件时出错: {str(e)}")

if not success:
    print("所有编码尝试均失败！无法提取'spring-boot'相关内容。")